#ifndef __PWM_HAL_H__
#define __PWM_HAL_H__

#ifdef  __cplusplus
extern "C" {
#endif//__cplusplus

/**
 * @brief   定时器配置错误类型定义
 */
typedef enum __TIMER_ERROR_CODE
{
    TIMER_ERROR_INVALID_TIMER_INDEX = -1,
    TIMER_ERROR_OK = 0
}TIMER_ERROR_CODE;

typedef enum __TIMER_INDEX
{
	H_TIMER1 = 0,
    H_TIMER2 = 1,
    H_TIMER3,
} TIMER_INDEX;

typedef void  (*timer_cb)(int TimerIdx);

/**
 * @brief      配置定时器参数，该函数单位为us
 *
 * @param[in]  TimerIndex        定时器索引, 详见 #TIMER_INDEX，目前基本定时timer是TIMER1 TIMER2 TIMER3，其中TIMER1用于systick，
                                 因此可选的timer是TIMER2 TIMER3
 * @param[in]  usec              定时设置, 单位：微妙(us)
 * @param[in]  cb                timer 中断处理回调函数，会在中断处理中调用此函数
 * @return     错误号, 详见 #TIMER_ERROR_CODE
 */
extern TIMER_ERROR_CODE uni_hal_timer_init(TIMER_INDEX TimerIdx,unsigned int usec, timer_cb cb);

extern TIMER_ERROR_CODE uni_hal_timer_start(TIMER_INDEX TimerIdx);

extern TIMER_ERROR_CODE uni_hal_timer_pause(TIMER_INDEX TimerIdx);


#ifdef  __cplusplus
}
#endif//__cplusplus

#endif//__PWM_HAL_H__
